\pagestyle{scrplain}
Die nachfolgende Anforderungsanalyse wird gemäss dem Software Requirements Specification Standard \acrshort{ieee} 830 gegliedert und dokumentiert (\vgl{\cite[S. 49-50]{pohl2010basiswissen}}). Dieser Standard definiert zwei Bereiche mit unterschiedlichem Fokus. Die Customer Requirement\footnote{Nach dem Standard \acrshort{ieee} 830 entsprechen die Customer Requirements dem kundenseitigen Lastenheft.} beinhalten Anforderungen aus Sicht des Kunden und des Endanwenders. Die Development Requirements\footnote{Die Development Requirements entsprechen dem Pflichtenheft, das durch das auszuführende Unternehmen erstellt wird.} formulieren technische Anforderungen aus der Sicht des Entwicklers.

\chapter{Einleitung}
\pagestyle{scrheadings}
\label{cha:anforderungsanalyse_einleitung}
\section{Zweck}
\label{sec:zweck}
Die Anforderungsanalyse dient als elementare Basis für die nachfolgend genannten Abschnitte:
\begin{itemize}
  \item{\textbf{Architektur und Konzept:} Die Anforderungen dienen als Grundlage für die Architektur und das Konzept der Erweiterung.}
  \item{\textbf{Implementation:} Die Implementation der Erweiterung richtet sich nach den ermittelten Anforderungen.}
  \item{\textbf{Überprüfung:} Der implementierte Prototyp wird anhand der Anforderungen überprüft und bewertet.}
\end{itemize}

\section{Namensgebung}
\label{sec:namensgebung}
Die Erweiterung soll den Namen ">XCommander"< tragen. Das ">X"< steht für das englische Wort ">cross"< und assoziiert die Browserunabhängigkeit der Erweiterung (vom Englischen cross-browser). Das englische Wort ">Commander"< steht für die Kommandozeilenfunktion der Erweiterung. Kommandos für die XCommander Erweiterung werden ">XCommands"< genannt.

\section{Stakeholder}
\label{sec:stakeholder}
In der \autoref{tab:stakeholder} werden die Stakeholder nach ihrer Funktion gruppiert und ihre Ziele und Interessen beschrieben.
\newpage
\begin{longtable}{p{0.25\textwidth}p{0.68\textwidth}}
\caption{Stakeholder}\label{tab:stakeholder}\\
  \hline
  \textbf{Rolle / Funktion} & \textbf{Ziele und Interessen} \\\hline\rowcolor[gray]{0.9}
  Nutzer & Der Nutzer möchte unabhängig vom Browser seine Erweiterung um beliebige XCommands erweitern und diese einfach und schnell verwenden können. \\
  Entwickler & Ein XCommand-Entwickler benötigt ein Dokumentation der XCommander \acrshort{api} und die Möglichkeit sein Kommando im Browser debuggen zu können.\\\rowcolor[gray]{0.9}
  Browserhersteller & Die Erweiterung muss die Programming"= und Style"=Guidelines der Browserhersteller berücksichtigen, damit die Erweiterung im Add-On Store der jeweiligen Hersteller publiziert werden können. \\\hline
\end{longtable}

\section{Übersicht}
\label{sec:übersicht}
Die Anforderungsanalyse wird in zwei Abschnitte gegliedert. Die Allgemeine Übersicht in \autoref{cha:allgemeine_übersicht} dokumentiert zusätzliche Informationen, die das Verständnis der Anforderungen aus \autoref{cha:anforderungen} erhöhen.

\chapter{Allgemeine Übersicht}
\label{cha:allgemeine_übersicht}

\section{Systemumfeld}
\label{sec:system_und_kontextabgrenzung}
Das Systemkontextdiagramm aus \autoref{fig:systemkontext} beschreibt die wesentlichen Teile innerhalb des Systems und des Systemkontexts.

\begin{figure}[H]
   \centering
   \includegraphics[width=0.8\textwidth]{images/systemkontext}
   \caption[System- und Kontextabgrenzung]{System- und Kontextabgrenzung}
   \label{fig:systemkontext}
\end{figure}

\subsubsection{System}
Beim System handelt es sich um eine browserunabhängige Erweiterung, die den Funktionsumfang des Browsers erweitern. Das System besteht aus den Komponenten \acrshort{ui}, \gls{parser}, Verwaltung und der browserunabhängigen Library. Diese Komponenten sind integraler Bestandteil der Entwicklung und müssen den Anforderungen entsprechend konzipiert und implementiert werden.

\subsubsection{Systemkontext}
Der Systemkontext beinhaltet nachfolgende Bestandteile:
\begin{itemize}
  \item{\textbf{Build und Deployment:} Der Build der Erweiterung und das Deployment für Updates und neue Releases erfolgt zentralisiert. Neue Versionen werden für den jeweiligen Browser gepackt und auf dem Update-Server zur Verfügung gestellt.}
  \item{\textbf{Continuous Integration:} Durch kontinuierliche Integration des Source Codes in das Versionsverwaltungssystem wird gewährleistet, dass Updates nach dem Testing zur Verfügung stehen und zu einem späteren Zeitpunkt mehrere Entwickler am Projekt arbeiten können.}
  \item{\textbf{Browser:} Der Browser agiert als Laufzeitumgebung des zu entwickelnden Systems. Er ist elementarer Bestandteil des Systemkontextes und beeinflusst die Randbedingungen in der Anforderungsanalyse.}
  \item{\textbf{\acrshort{api} Dokumentation:} Damit ein Entwickler eigene Kommandos für die Erweiterung entwickeln kann, benötigt er ein Dokumentation der \acrshort{api}"= Schnittstelle.}
  \item{\textbf{Akteure:} Nutzer und Entwickler bilden die Akteure, die direkt oder indirekt mit dem System interagieren (\vgl{\autoref{sec:stakeholder}}).}
\end{itemize}

\subsubsection{Irrelevante Umgebung}
Der Source Code der Erweiterung wird mittels Versionskontrolle verwaltet. Sie dient als Backup, zur Versionierung und Historisierung einzelner Artefakte. Continuous Integration ist ein wichtiger Bestandteil der Versionskontrolle.

\section{Architekturbeschreibung}
\label{sec:architekturbeschreibung}
Die Software wird als Erweiterung entwickelt. Welche Browser die Erweiterung letztendlich unterstützen wird, hat zum Zeitpunkt der Anforderungsanalyse noch keine Relevanz.

\input{content/anforderungsanalyse/anforderungsanalyse_use_cases}

\newpage
\section{Nutzer und Zielgruppen}
\label{sec:nutzer_und_zielgruppen}
\subsubsection{Nutzer}
Der Endanwender von XCommander benötigt keine Kenntnisse über die Architektur der Erweiterung. Sein Interesse liegt einzig darin, seine ">\gls{browsing_experience}"< durch ausgesuchte XCommands zu erhöhen.
\subsubsection{XCommand Entwickler}
Der XCommand Entwickler kennt die Schnittstelle der XCommander Erweiterung und kann ein beliebiges XCommand unter Beachtung der Randbedingungen (\vgl{\autoref{sec:randbedingungen})
entwickeln. Der Entwickler kann sein XCommand anderen Nutzern oder Entwicklern zur Verfügung stellen.

\section{Randbedingungen}\label{sec:randbedingungen}
Die Erweiterungskonzepte einzelner Browser schränken die Technologiewahl und die Architektur der browserunabhängigen Erweiterung ein und müssen bereits bei Anforderungsanalyse und dem späteren Konzept zwingend berücksichtigt werden. Die erarbeiteten Erkenntnisse aus \autoref{cha:erweiterungskonzept_einzelner_browser} - \nameref{cha:erweiterungskonzept_einzelner_browser} sind integraler Bestandteil dieser Anforderungsanalyse und legen die Basis der Randbedingung.

\input{content/anforderungsanalyse/anforderungsanalyse_requirements}